// 定义包名
package com.atguigu.lease.web.app.custom.config;

// 导入所需的类
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

// 使用@Configuration注解标记这个类为Spring的配置类
@Configuration
public class Knife4jConfiguration {

    // 使用@Bean注解定义一个OpenAPI的Bean，用于自定义Swagger UI的OpenAPI配置
    @Bean
    public OpenAPI customOpenAPI() {
        // 创建一个新的OpenAPI对象，并设置其信息
        return new OpenAPI()
                .info(new Info()
                        // 设置API的标题
                        .title("APP接口")
                        // 设置API的版本
                        .version("1.0")
                        // 设置API的描述
                        .description("用户端APP接口")
                        // 设置服务条款的URL
                        .termsOfService("http://doc.xiaominfo.com")
                        // 设置许可证信息
                        .license(new License().name("Apache 2.0")
                                // 设置许可证的URL
                                .url("http://doc.xiaominfo.com")));
    }

    // 使用@Bean注解定义一个GroupedOpenApi的Bean，用于分组Swagger UI的API文档
    @Bean
    public GroupedOpenApi loginAPI() {
        // 创建一个新的GroupedOpenApi对象，用于定义登录信息的API分组
        return GroupedOpenApi.builder().group("登录信息")
                // 设置匹配的路径模式
                .pathsToMatch("/app/login/**", "/app/info")
                // 构建并返回GroupedOpenApi对象
                .build();
    }

    // 使用@Bean注解定义一个GroupedOpenApi的Bean，用于分组个人信息的API文档
    @Bean
    public GroupedOpenApi personAPI() {
        // 创建一个新的GroupedOpenApi对象，用于定义个人信息的API分组
        return GroupedOpenApi.builder().group("个人信息")
                // 设置匹配的路径模式
                .pathsToMatch(
                        "/app/history/**",
                        "/app/appointment/**",
                        "/app/agreement/**"
                )
                // 构建并返回GroupedOpenApi对象
                .build();
    }

    // 使用@Bean注解定义一个GroupedOpenApi的Bean，用于分组找房信息的API文档
    @Bean
    public GroupedOpenApi lookForRoomAPI() {
        // 创建一个新的GroupedOpenApi对象，用于定义找房信息的API分组
        return GroupedOpenApi.builder().group("找房信息")
                // 设置匹配的路径模式
                .pathsToMatch(
                        "/app/apartment/**",
                        "/app/room/**",
                        "/app/payment/**",
                        "/app/region/**",
                        "/app/term/**"
                )
                // 构建并返回GroupedOpenApi对象
                .build();
    }
}